Python + venv + pip
Python
公式配布物を使用
HomeBrew
$ brew install python@3.8 python@3.9
こだわりがなければ公式配布物で良い
$ python3.9 -m venv .venv
$ source .venv/bin/activate
fish, csh, Powershell, cmdなどの場合はコマンドが若干異なる(公式docに記述あり) $ source .venv/bin/activate.fish
fishはこれ
いつも.fishを忘れる
(.venv) $ deactivate
(.venv) $ python -V
仮想環境作成時のPythonのバージョンが、仮想環境内のPythonのバージョンになる
$ python3.9のように指定する必要はない
確認
code:sh
$ python3.8 -m venv .venv3.8
$ . .venv3.8/bin/activate
(.venv3.8) $ python -V
Python 3.8.6
$ python3.9 -m venv .venv3.9
$ . .venv3.9/bin/activate
(.venv3.9) $ python -V
Python 3.9.0
code:sh
$ where python3.9
/usr/local/bin/python3.9
$ ls -l .venv3.9/bin/ # 一部抜粋
python@ -> python3.9
python3@ -> python3.9
python3.9@ -> /usr/local/bin/python3.9
(.venv) $ pip install hoge
(.venv) $ pip install -U old-package
(.venv) $ pip install -U pip
(.venv) $ pip uninstall fuga
(.venv) $ pip freeze > requirements.txt
(.venv) $ pip install -r requirements.txt
requirements.txt
requirements-dev.txt
メモ
Pythonのインストールにpyenvのpython-buildを使うのは? 処理系のバージョンをパッチアップデートごとにインストールしたいときに使おうと思う
仮想環境におけるPythonのバージョンは?
$ python3.9 -m venv .venvを実行するときのバージョンが使えるようになる
バージョンの切り替えは?
バージョンごとに公式配布物からインストールし、python3.7・python3.8などを都度使い分ける
(未解決) 同一プロジェクト内でバージョンの切り替えが必要なら〜
pyenv、pythonzを使う?
バージョンごとに仮想環境を作成する? (venv3.8, venv3.9のように)
npm scriptsやPipenvの[scripts]みたいにscriptを用意したい
シェルスクリプト, CLI作成 or タスクランナー (fire, click, invoke, Fabric, ...)??
productionとdevelopmentを分けてパッケージをインストールし、developmentに必要なパッケージを共有する術がほしい
開発用に必要なパッケージはシステムのpipでインストール?
requirements-dev.txtは手入力で作成?
developmentに必要なパッケージはどこにインストール?
システム or プロジェクトの仮想環境(.venv)
refs
本番環境は、機能をシンプルに保ち、必要最小限の仕組みで揃える
本番環境や個人環境の目的に合わせて、それぞれ最適な方法を選択する(統一することに固執しない)
Webアプリケーションの本番環境で、shimizukawa.iconが最近使っている手法